SYS			:=	$(shell gcc -dumpmachine)
CC			=	g++
#CC			=	clang++-6.0 -fPIE
#CC			=	clang++-6.0

TARGET		=	libwebsocket.a

SOURCES		=	\
						WebSocket.cpp \
						base64/base64.cpp \
						sha1/sha1.cpp \
						sha1/sha.cpp

INSTALL_DIR	=	./

INCLUDE += -I../

# 기본 라이브러리
#INCLUDE += -I./ -I../

# 용량을 줄이기위한 옵션
ifneq (, $(findstring linux, $(SYS)))
	ifneq (, $(findstring g++, $(CC)))
#		CPPFLAGS	+= -Wl,--gc-sections -s
	endif
endif


# 디버깅정보를 포함시킨다.
#CPPFLAGS	+=	-g
# 용량을 줄여주는 옵션(사용하지 않는 오브젝트 제거...)
#CPPFLAGS	+=	-ffunction-sections -fdata-sections -s

#	-O2							최적화
#	-std=c++03			c++03 문법 기준으로 검사 및 컴파일
#	-std=c++11			c++11 문법 기준으로 검사 및 컴파일
#	-Wall -Wextra		모든 경고 킴
#	-Wfloat-equal		C,C++ 소수점 비교연산시 경고 출력(C,C++ 소수점 연산은 정확하지 않음)
#	-m64						64비트로 컴파일
#	-m32						32비트로 컴파일,
#									32비트 컴파일시에는 32비트용 라이브러리가 시스템 내에 설치되어 있어야 한다.
#CPPFLAGS += -O2 -std=c++11 -Wall -Wextra -Winline -Wfloat-equal -m64
#CPPFLAGS += -D_REENTRANT -O2 -std=c++11 -Wall -Wextra -Wfloat-equal -m64
CPPFLAGS += -D_REENTRANT -O2 -std=c++17 -Wall -Wextra -Wfloat-equal -m64 -DDEBUGBUILD

OBJECTS	:=	$(SOURCES:.cpp=.o)
DEPENDS	:=	$(SOURCES:.cpp=.d)

all: $(OBJECTS)
	rm -rf core.*
	ar rcv $(TARGET) $(OBJECTS)
	cp $(TARGET) ../libs
#	$(CC) -o $(TARGET) $(OBJECTS) $(CPPFLAGS) $(LDFLAGS)

clean:
	rm -rf $(TARGET) $(OBJECTS)

install: all
#	cp $(TARGET) $(INSTALL_DIR)

.c.o: $(.cpp.o)
.cpp.o:
	$(CC) $(INCLUDE) $(CPPFLAGS) -c $< -o $@
	
%d:%cpp
	$(CC) $(INCLUDE) $(CPPFLAGS) -MM -MP -MT "$(@:.d=.o) $@" -MF $@ $<

.PHONY: all

-include $(DEPENDS)


